Field of the Invention
Embodiments of the present invention relate generally to texture processing and, more specifically, to an approach to caching decoded texture data with variable dimensions.
Description of the Related Art
A conventional texture cache stores encoded texture data for use by a texture processing pipeline. The texture data could be encoded according to adaptive scalable texture compression (ASTC), among other encoding standards. When a particular texture is needed for a rendering operation, the texture pipeline queries the cache to determine whether an encoded version of the texture data is resident in the cache. If the encoded version not currently cached, then external memory can be accessed and the encoded texture retrieved. The encoded texture is then cached and decoded for use by the texture processing pipeline. If the encoded version is, in fact, cached, then the encoded version can be decoded and provided to the texture processing pipeline. With this approach, multiple decoder units are typically coupled to the texture cache so that encoded texture data can be decoded in parallel.
However, the approach described above is problematic for several reasons. First, the multiple decoder units consume significant area in order to realize a certain level of throughput. The only way to increase that throughput is to introduce additional decoder units, which consumes additional area. Second, the existing decoder units oftentimes perform redundant decoding operations when a given portion of texture data is needed several different times. Thus, the increase in throughput realized by the parallel architecture of the decoder units may be diminished by the low efficiency with which these units sometimes operate.
As the foregoing illustrates, what is needed in the art is a more efficient technique for storing and accessing texture data.